CouchDB নিরাপত্তার জন্য দুটি প্রধান Authentication পদ্ধতি ব্যবহার করে: Cookie-based Authentication এবং Token-based Authentication। এই দুটি পদ্ধতি ব্যবহারকারীকে তাদের অ্যাক্সেস প্রদান করে, কিন্তু তাদের কাজ করার পদ্ধতি এবং নিরাপত্তার ব্যবস্থাপনা আলাদা। নিচে এই দুটি পদ্ধতির বিস্তারিত আলোচনা করা হলো:
1. Cookie-based Authentication
Cookie-based Authentication একটি ক্লায়েন্ট-সার্ভার ভিত্তিক প্রক্রিয়া, যেখানে সার্ভার একটি cookie তৈরি করে এবং ক্লায়েন্টকে তা প্রদান করে। ক্লায়েন্ট তার পরবর্তী অনুরোধে সেই cookie ব্যবহার করে সার্ভারের কাছে অ্যাক্সেস প্রমাণিত করে।
কাজ করার পদ্ধতি:
- লগইন রিকুয়েস্ট: ব্যবহারকারী যখন প্রথমবার লগইন করেন, তখন একটি POST রিকুয়েস্ট পাঠানো হয়, যেখানে ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রেরণ করা হয়।
- সার্ভার কর্তৃক প্রমাণীকরণ: সার্ভার ব্যবহারকারীর নাম এবং পাসওয়ার্ড যাচাই করে, এবং যদি প্রমাণীকরণ সফল হয়, তাহলে এটি একটি cookie তৈরি করে এবং ব্যবহারকারীকে প্রদান করে।
- ক্লায়েন্টের রিকুয়েস্ট: পরবর্তী যে কোনো রিকুয়েস্টে, ক্লায়েন্ট সেই cookie সহ প্রমাণীকৃত রিকুয়েস্ট পাঠায়।
- সার্ভারের রেসপন্স: সার্ভার cookie যাচাই করে এবং প্রমাণীকৃত হলে ডেটা প্রদান করে।
উদাহরণ:
- লগইন রিকুয়েস্ট:
curl -X POST http://127.0.0.1:5984/_session -H "Content-Type: application/json" -d '{
"name": "admin",
"password": "admin_password"
}'
এটি একটি cookie ফিরিয়ে দেবে, যা পরবর্তী রিকুয়েস্টে ব্যবহার করতে হবে।
- ক্লায়েন্টের রিকুয়েস্ট (cookie সহ):
curl -X GET http://127.0.0.1:5984/mydatabase -b cookies.txt
এখানে, cookies.txt ফাইলে প্রাপ্ত cookie সংরক্ষিত থাকবে, যা সার্ভার যাচাই করে প্রমাণীকৃত রিকুয়েস্ট হিসেবে গ্রহণ করবে।
2. Token-based Authentication
Token-based Authentication ব্যবহারকারীর প্রমাণীকরণের জন্য একটি JWT (JSON Web Token) বা অন্য ধরনের টোকেন ব্যবহার করে। এই পদ্ধতিতে, ব্যবহারকারী একবার লগইন করলে, সার্ভার তাকে একটি Token প্রদান করে এবং সেটি পরবর্তী অনুরোধে ব্যবহার করা হয়। টোকেন সাধারণত নির্দিষ্ট সময়ের জন্য বৈধ থাকে এবং সময়সীমা শেষ হলে আবার নতুন টোকেন সংগ্রহ করতে হয়।
কাজ করার পদ্ধতি:
- লগইন রিকুয়েস্ট: ব্যবহারকারী যখন প্রথমবার লগইন করেন, তখন একটি POST রিকুয়েস্ট পাঠানো হয়, যেখানে ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রেরণ করা হয়।
- সার্ভার কর্তৃক প্রমাণীকরণ: সার্ভার ব্যবহারকারীর নাম এবং পাসওয়ার্ড যাচাই করে এবং যদি প্রমাণীকরণ সফল হয়, তাহলে এটি একটি JWT বা Token তৈরি করে এবং ব্যবহারকারীকে প্রদান করে।
- ক্লায়েন্টের রিকুয়েস্ট: পরবর্তী যে কোনো রিকুয়েস্টে, ক্লায়েন্ট সেই টোকেন সহ প্রমাণীকৃত রিকুয়েস্ট পাঠায়।
- সার্ভারের রেসপন্স: সার্ভার টোকেন যাচাই করে এবং প্রমাণীকৃত হলে ডেটা প্রদান করে।
উদাহরণ:
- লগইন রিকুয়েস্ট (Token প্রাপ্তি):
curl -X POST http://127.0.0.1:5984/_session -H "Content-Type: application/json" -d '{
"name": "admin",
"password": "admin_password"
}'
এটি JWT বা Token প্রদান করবে, যা পরবর্তী অনুরোধে ব্যবহার করতে হবে।
- ক্লায়েন্টের রিকুয়েস্ট (Token সহ):
curl -X GET http://127.0.0.1:5984/mydatabase -H "Authorization: Bearer <token>"
এখানে, <token> এর স্থানে প্রাপ্ত JWT বা Token ব্যবহার করতে হবে।
প্রধান পার্থক্য
| বৈশিষ্ট্য | Cookie-based Authentication | Token-based Authentication |
|---|---|---|
| প্রমাণীকরণের পদ্ধতি | ব্যবহারকারী প্রথম লগইন করলে একটি cookie প্রদান করা হয়। | প্রথম লগইনে টোকেন (যেমন JWT) প্রদান করা হয়। |
| অ্যাক্সেস মেথড | পরবর্তী রিকুয়েস্টে cookie ব্যবহার করা হয়। | পরবর্তী রিকুয়েস্টে token হেডারে পাঠানো হয়। |
| লগিন এবং টোকেন | সার্ভারকে প্রতিটি রিকুয়েস্টে cookie পাঠাতে হয়। | সার্ভারকে প্রতিটি রিকুয়েস্টে token পাঠাতে হয়। |
| টোকেনের সময়সীমা | সাধারণত cookie একটি নির্দিষ্ট সময়ের জন্য বৈধ থাকে। | টোকেনের একটি নির্দিষ্ট সময়সীমা থাকে (যেমন ১ ঘণ্টা)। |
| নিরাপত্তা | নিরাপত্তা cookie চুরি হওয়ার সম্ভাবনা থাকতে পারে। | টোকেন চুরি হলে, তা দীর্ঘ সময় অবৈধভাবে ব্যবহার করা যেতে পারে। |
সারসংক্ষেপ
- Cookie-based Authentication সহজ এবং কার্যকর, কিন্তু কিছু নিরাপত্তা ঝুঁকি থাকতে পারে, যেমন cookie theft।
- Token-based Authentication উন্নত নিরাপত্তা প্রদান করে এবং মোবাইল এবং ডিসট্রিবিউটেড অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত, কারণ এতে একাধিক প্ল্যাটফর্মে stateless যোগাযোগ সম্ভব।
Read more